#include <iostream>
using namespace std;

//普通函数与函数模版的区别

//1、普通函数调用，可以发生隐式类型转换

//2、函数模版 用自动类型推导，不可以发生隐式类型转换

//3、函数模版 用显示指定类型，可以发生隐式类型转换


//普通函数
int add(int a, int b)
{
    return a + b;
}

//函数模版
template<class T>
T myadd(T a, T b)
{
    return a + b;
}

void test1()
{
    int a = 10;
    int b = 99;
    char ch = 'a';
    
    cout << add(a, ch) << endl;//普通函数，ch隐式类型转换为97

    //自动类型推导，不可以发生隐式类型转换
    //error: cout << myadd(a, ch) << endl;     

    //显示指定类型，可以发生隐式类型转换
    cout << myadd<int>(a, ch) << endl;
}


int main()
{
    test1();
    return 0;
}